package com.tdxy.jdbc;

import com.tdxy.jdbc.entity.User;
import com.tdxy.jdbc.util.JDBCUtil;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class JdbcOpraction {
    public static void main(String[] args)throws Exception {
        // 模拟参数
        User user = new User ();
        user.setId(3);
        user.setName("admin1");
        user.setPassword("admin1admin");
//        insert(user);
//        update(user);
        int id = 3 ;
        delete(3);
    }

    /**
     * 实现 用户的添加的方法
     * @param user 添加user的实例
     */
    public static void insert(User user) throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.cj.jdbc.Driver");
        String sql = "insert into tb_user values (null , ? , ? );";
        // 连接数据库后的可操作对象
        Connection conn =
                DriverManager.getConnection(JDBCUtil.URL, JDBCUtil.USER, JDBCUtil.PWD);
        // 表操作对象
        PreparedStatement prestst = conn.prepareStatement(sql);
        prestst.setString(1,user.getName());
        prestst.setString(2,user.getPassword());
        // executeUpdate() 返回值是对数据库表操作后, 执行了几行操作的返回值
        int i = prestst.executeUpdate();
        if (i == 1){
            System.out.println("添加数据成功");
        }else{
            System.out.println("添加数据失败");
        }
        // 流的关闭操作。
        prestst.close();
        conn.close();
    }

    public static void update(User user) throws Exception {
        Class.forName("com.mysql.cj.jdbc.Driver");
        String sql = "update tb_user set name= ? ,password = ? where id = ? ;";
        Connection conn =
                DriverManager.getConnection(JDBCUtil.URL, JDBCUtil.USER, JDBCUtil.PWD);
        PreparedStatement prestst = conn.prepareStatement(sql);
        prestst.setString(1,user.getName());
        prestst.setString(2,user.getPassword());
        prestst.setInt(3,user.getId()); // 根据id的类型转换添加类型
        // executeUpdate() 返回值是对数据库表操作后, 执行了几行操作的返回值
        int i = prestst.executeUpdate();
        if (i == 1){
            System.out.println("修改数据成功");
        }else{
            System.out.println("修改数据失败");
        }
        prestst.close();
        conn.close();
    }
    public static void delete(int id ) throws Exception{
        Class.forName("com.mysql.cj.jdbc.Driver");
        String sql = "delete from tb_user where id = ? ";
        Connection conn =
                DriverManager.getConnection(JDBCUtil.URL, JDBCUtil.USER, JDBCUtil.PWD);
        PreparedStatement prestst = conn.prepareStatement(sql);
        prestst.setInt(1,id); // 根据id的类型转换添加类型
        // executeUpdate() 返回值是对数据库表操作后, 执行了几行操作的返回值
        int i = prestst.executeUpdate();
        if (i == 1){
            System.out.println("删除数据成功");
        }else{
            System.out.println("删除数据失败");
        }
        prestst.close();
        conn.close();
    }
}

